package service;

import dao.FavoriteDao;
import model.Favorite;
import model.Goods;
import model.Page;

import java.sql.SQLException;
import java.util.List;

/**
 * 收藏服务类
 */
public class FavoriteService {
    private FavoriteDao favoriteDao = new FavoriteDao();
    
    /**
     * 添加收藏
     * @param user_id 用户ID
     * @param goods_id 商品ID
     * @return 操作结果
     */
    public boolean addFavorite(int user_id, int goods_id) {
        try {
            // 先检查是否已收藏
            if (favoriteDao.isFavorite(user_id, goods_id)) {
                return false;
            }
            Favorite favorite = new Favorite(user_id, goods_id);
            favoriteDao.addFavorite(favorite);
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }
    
    /**
     * 取消收藏
     * @param user_id 用户ID
     * @param goods_id 商品ID
     * @return 操作结果
     */
    public boolean deleteFavorite(int user_id, int goods_id) {
        try {
            favoriteDao.deleteFavorite(user_id, goods_id);
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }
    
    /**
     * 判断商品是否已收藏
     * @param user_id 用户ID
     * @param goods_id 商品ID
     * @return 是否已收藏
     */
    public boolean isFavorite(int user_id, int goods_id) {
        try {
            return favoriteDao.isFavorite(user_id, goods_id);
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }
    
    /**
     * 获取用户收藏商品分页
     * @param user_id 用户ID
     * @param pageNumber 页码
     * @return 分页对象
     */
    public Page getFavoriteGoodsPage(int user_id, int pageNumber) {
        Page p = new Page();
        p.setPageNumber(pageNumber);
        int pageSize = 8; // 每页显示8个商品
        
        try {
            // 获取总记录数
            int totalCount = favoriteDao.getFavoriteCountByUserId(user_id);
            
            // 设置分页信息
            p.SetPageSizeAndTotalCount(pageSize, totalCount);
            
            // 获取当前页数据
            List<Goods> list = favoriteDao.getFavoriteGoodsByUserId(user_id, pageNumber, pageSize);
            // 将List<Goods>转换为List<Object>
            p.setList((List<Object>)(List<?>)list);
            
            return p;
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }
}